<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
//define('__TYPECHO_DEBUG__', true);
/**
 * 把所有读过的书以时间线的方式展示出来
 *
 * @package BooksLine
 * @author Jamiexu
 * @version 1.0
 * @link https://blog.jamiexu.cn
 *
 * 本插件根据links插件源码修改而编写的
 * 时间线源码来源百度并非原创
 * 本人做的只是把两个源码结合起来
 *
 * time:2020-7-11 11:34
 * email:doxm@foxmail.com
 *
 */

include_once 'SQL.php';

class BooksLine_Plugin implements Typecho_Plugin_Interface
{
    /**
     * 激活插件方法,如果激活失败,直接抛出异常
     *
     * @access public
     * @return void
     * @throws Typecho_Plugin_Exception
     */

    public static function activate()
    {
        $msg = self::bookslineInstall();
        Helper::addPanel(3, 'BooksLine/manage-books.php', '书籍时间线', '书籍时间线管理', 'administrator');
        Helper::addAction('booksline-edit', 'BooksLine_Action');
        return _t($msg);
    }

    /**
     * 禁用插件方法,如果禁用失败,直接抛出异常
     *
     * @static
     * @access public
     * @return void
     * @throws Typecho_Plugin_Exception
     */
    public static function deactivate()
    {
        Helper::removePanel(3, 'BooksLine/manage-books.php');
    }

    /**
     * 获取插件配置面板
     *
     * @access public
     * @param Typecho_Widget_Helper_Form $form 配置面板
     * @return void
     */
    public static function config(Typecho_Widget_Helper_Form $form)
    {
    }

    /**
     * 个人用户的配置面板
     *
     * @access public
     * @param Typecho_Widget_Helper_Form $form
     * @return void
     */
    public static function personalConfig(Typecho_Widget_Helper_Form $form)
    {
    }


    public static function form($action = null)
    {
        /** 构建表格 */
        $options = Typecho_Widget::widget('Widget_Options');
        $form = new Typecho_Widget_Helper_Form(Typecho_Common::url('/action/booksline-edit', $options->index),
            Typecho_Widget_Helper_Form::POST_METHOD);

        /** 书籍名称 */
        $name = new Typecho_Widget_Helper_Form_Element_Text('name', NULL, NULL, _t('书籍名称*'));
        $form->addInput($name);

        /** 书籍作者 */
        $author = new Typecho_Widget_Helper_Form_Element_Text('author', NULL, NULL, _t('书籍作者*'));
        $form->addInput($author);

        /** 读后简介 */
        $info = new Typecho_Widget_Helper_Form_Element_Textarea('info', NULL, NULL, _t('读后简介*'));
        $form->addInput($info);

        /** 阅读时间 */
        $date = new Typecho_Widget_Helper_Form_Element_Text('date', NULL, NULL, _t('阅读时间*'));
        $form->addInput($date);

        /** 链接动作 */
        $do = new Typecho_Widget_Helper_Form_Element_Hidden('do');
        $form->addInput($do);

        $id = new Typecho_Widget_Helper_Form_Element_Hidden('id');
        $form->addInput($id);

        /** 提交按钮 */
        $submit = new Typecho_Widget_Helper_Form_Element_Submit();
        $form->addItem($submit);
        $request = Typecho_Request::getInstance();

        if (isset($request->id) && 'insert' != $action) {
            /** 更新模式 */
            $db = Typecho_Db::get();
            $prefix = $db->getPrefix();
            $book = $db->fetchRow($db->select()->from($prefix.'booksline')->where('id = ?', $request->id));
            if (!$book) {
                throw new Typecho_Widget_Exception(_t('书籍不存在'), 404);
            }

            $name->value($book['name']);
            $author->value($book['author']);
            $info->value($book['info']);
            $date->value($book['date']);
            $do->value('update');
            $id->value($book['id']);
            $submit->value(_t('编辑书籍'));
            $_action = 'update';
        } else {
            $do->value('insert');
            $submit->value(_t('添加书籍'));
            $_action = 'insert';
        }

        if (empty($action)) {
            $action = $_action;
        }

        /** 给表单增加规则 */
        if ('insert' == $action || 'update' == $action) {
            $name->addRule('required', _t('必须填写书籍名称'));
            $author->addRule('required', _t('必须填写书籍作者/出版社名称'));
            $info->addRule('required', _t('必须填写读后简介'));
            $date->addRule('required', _t('必须填写阅读时间'));
        }
        if ('update' == $action) {

        }
        return $form;
    }


    /**
     * 安装数据库
     *
     */
    function bookslineInstall()
    {
        $db = Typecho_Db::get();
        $prefix = $db->getPrefix();
        $sql = str_ireplace('%_prefix_%', $prefix, SQL::$SQL_CREATE);
        $sql = str_ireplace('%_charset_%', 'utf8',$sql);
//        try {
            $db->query($sql, Typecho_Db::WRITE);
            return '成功建立书籍时间线数据表，插件启动成功';
//        } catch (Typecho_Db_Exception $e) {
//            return $e + '';
//        }

    }



}